package us.mooresr.aircraftscheduling.client.gin;

import com.google.gwt.inject.client.GinModules;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;

import us.mooresr.aircraftscheduling.client.AdminGatekeeper;
import us.mooresr.aircraftscheduling.client.LoggedInGatekeeper;
import us.mooresr.aircraftscheduling.client.gin.ClientModule;
import us.mooresr.aircraftscheduling.client.ui.LoginPresenter;
import us.mooresr.aircraftscheduling.client.ui.ReservationListPresenter;
import us.mooresr.aircraftscheduling.client.ui.UserListPresenter;

import com.google.gwt.inject.client.Ginjector;
import com.google.gwt.event.shared.EventBus;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.google.inject.Provider;
import com.google.gwt.inject.client.AsyncProvider;
import us.mooresr.aircraftscheduling.client.ui.MainPagePresenter;
import us.mooresr.aircraftscheduling.client.LoginStateManager;


@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {

	EventBus getEventBus();

	PlaceManager getPlaceManager();

	Provider<LoginPresenter> getLoginPresenter();

	Provider<ReservationListPresenter> getReservationListPresenter();
	
	Provider<UserListPresenter> getUserListPresenter();
	
	LoggedInGatekeeper getLoggedInGatekeeper();
	
	AdminGatekeeper getAdminGatekeeper();

	Provider<MainPagePresenter> getMainPagePresenter();
	
	LoginStateManager getLoginStateManager();
}
